#include<bits/stdc++.h>
using namespace std;
typedef double db;
const db eps=1e-3;
db ax,ay,bx,by,cx,cy,dx,dy,p,q,r;
db dis(db x1,db y1,db x2,db y2)
{
	return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
db cal(db x1,db y1,db x2,db y2)
{
	return dis(ax,ay,x1,y1)/p+dis(x1,y1,x2,y2)/r+dis(x2,y2,dx,dy)/q;
}
db solve(db x,db y)
{
	db lx=cx,ly=cy,rx=dx,ry=dy;
	while(fabs(rx-lx)>eps||fabs(ry-ly)>eps)
	{
		db mid1x=(lx+lx+rx)/3.0,mid1y=(ly+ly+ry)/3.0,mid2x=(lx+rx+rx)/3.0,mid2y=(ly+ry+ry)/3.0;
		if(cal(x,y,mid1x,mid1y)>cal(x,y,mid2x,mid2y))lx=mid1x,ly=mid1y;
		else rx=mid2x,ry=mid2y;
	}
	return cal(x,y,lx,ly);
}
int main()
{
	scanf("%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf",&ax,&ay,&bx,&by,&cx,&cy,&dx,&dy,&p,&q,&r);
	db lx=ax,ly=ay,rx=bx,ry=by;
	while(fabs(rx-lx)>eps||fabs(ry-ly)>eps)
	{
		db mid1x=(lx+lx+rx)/3.0,mid1y=(ly+ly+ry)/3.0,mid2x=(lx+rx+rx)/3.0,mid2y=(ly+ry+ry)/3.0;
		if(solve(mid1x,mid1y)>solve(mid2x,mid2y))lx=mid1x,ly=mid1y;
		else rx=mid2x,ry=mid2y;
	}
	printf("%.2lf\n",solve(lx,ly));
	return 0;
}
